package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import estacion.dominio.Taxi;
import estacion.dominio.Vehiculo;

public class FPTaxi {
	public static void insertTaxi(Taxi tax) throws Exception {
		String SQL="Insert into vehiculo(codigo_vehiculo, licencia_necesitada, capacidad_personas, matricula, marca, modelo) " +
				"values('"+tax.getCodigo_vehiculo()+"', '"+tax.get_Licencia_necesitada()+"', "+tax.get_capacidadPersonas()+", '"+tax.get_Matricula()+"', '"+tax.get_Marca()+"','"+tax.get_Modelo()+"' )";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	public static void deleteTaxi(String codigo) throws Exception {
		String SQL="Delete from vehiculo where codigo_vehiculo=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, codigo);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	
	public static Taxi consultTaxi(String codigo) throws Exception {
		Taxi tax=null;		
		String SQL="Select * from vehiculo where codigo_vehiculo='"+codigo+"'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				tax=new Taxi();
				tax.setCodigo_vehiculo(r.getString("codigo_vehiculo"));
				tax.set_Licencia_necesitada(r.getString("licencia_necesitada"));
				tax.set_capacidadPersonas(r.getInt("capacidad_personas"));
				tax.set_Matricula(r.getString("matricula"));
				tax.set_Marca(r.getString("marca"));
				tax.set_Modelo(r.getString("modelo"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return tax;
	}
	
	
	public static void modificarTaxi(Taxi tax, String codigo) throws Exception{
		
		String SQL="UPDATE vehiculo SET licencia_necesitada='"+tax.get_Licencia_necesitada()+"', capacidad_personas="+tax.get_capacidadPersonas()+", matricula='"+tax.get_Matricula()+"', marca='"+tax.get_Marca()+"', modelo='"+tax.get_Modelo()+"' where codigo_vehiculo= '"+codigo+"'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Vector<Vehiculo> getTaxis() throws Exception {
		Vector<Vehiculo> result=new Vector<Vehiculo>();
		String SQL="Select * from vehiculo where licencia_necesitada='taxi'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Taxi tax=new Taxi();
				tax.setCodigo_vehiculo(r.getString("codigo_vehiculo"));
				tax.set_Licencia_necesitada(r.getString("licencia_necesitada"));
				tax.set_capacidadPersonas(r.getInt("capacidad_personas"));
				tax.set_Matricula(r.getString("matricula"));
				tax.set_Marca(r.getString("marca"));
				tax.set_Modelo(r.getString("modelo"));
				result.add(tax);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
}
